隨著IT運(yùn)維的不斷發(fā)展,尤其的Linux的飛速發(fā)展,越來(lái)越多的企業(yè)開(kāi)始使用Linux操作系統(tǒng)平臺(tái),例如CentOS、RedHat、Ubuntu、Fedora等等,成千上億個(gè)網(wǎng)站涌現(xiàn)在當(dāng)今互聯(lián)網(wǎng),互聯(lián)網(wǎng)已經(jīng)成為必不可少的工具,那今天我們跟大家一起來(lái)分享討論目前用的最多的Linux下主流網(wǎng)站架構(gòu):LVS+KEEPALIVED(heartbeat)+Squid+Nginx/Apache+JAVA/PHP+MySQL/MariaDB等。分享一個(gè)簡(jiǎn)單的拓?fù)鋱D,供各位同學(xué)實(shí)驗(yàn)參考
一般網(wǎng)站總體分為四層,依次為前端負(fù)載均衡、中間代理、后端服務(wù)、數(shù)據(jù)庫(kù)層。當(dāng)然除了這個(gè)整體的流程,不同的公司擴(kuò)展的東西也非常多,各種系統(tǒng)不斷的往這個(gè)架構(gòu)里面添加,形成一個(gè)非常龐大、復(fù)雜的系統(tǒng)。那接下來(lái)我們對(duì)每個(gè)層級(jí)運(yùn)維人員需要注意的細(xì)節(jié):
LVS負(fù)載均衡層
LVS負(fù)載均衡層主要用來(lái)抵御大流量及轉(zhuǎn)發(fā)數(shù)據(jù)功能,一般基于TCP/IP 四層協(xié)議進(jìn)行轉(zhuǎn)發(fā),根據(jù)不同的內(nèi)部環(huán)境使用的轉(zhuǎn)發(fā)方式也不一樣,通常DR模式效率比較高,LVS+keepalived結(jié)合,可以使用keepalived去管理我們整個(gè)配置文件,讓負(fù)責(zé)均衡變得簡(jiǎn)單實(shí)用,可以各種策劃來(lái)檢查后端Nginx或者Squid服務(wù)是否正常。LVS簡(jiǎn)單工作原理:用戶請(qǐng)求LVS VIP,LVS根據(jù)轉(zhuǎn)發(fā)方式和算法,將請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器,后端服務(wù)器接受到請(qǐng)求,返回給用戶,對(duì)于用戶來(lái)說(shuō),看不到WEB后端具體的應(yīng)用。運(yùn)維人員在維護(hù)LVS中,需要密切關(guān)注LVS當(dāng)前轉(zhuǎn)發(fā)連接數(shù)及系統(tǒng)LVS日志。通過(guò)監(jiān)控平臺(tái)監(jiān)控VIP、真實(shí)IP的情況、連接數(shù)的情況。
Nginx反向代理層
Nginx是目前主流的高性能WEB服務(wù)器,Nginx因?yàn)榉浅2诲e(cuò)的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗等優(yōu)點(diǎn),目前發(fā)展勢(shì)頭非?;鸨?。Nginx主要基于7層應(yīng)用,能夠?qū)崿F(xiàn)各種規(guī)則轉(zhuǎn)發(fā),反向代理我們后端的JAVA、PHP動(dòng)態(tài)服務(wù)器,同時(shí)Nginx本身處理靜態(tài)頁(yè)面的能力官方理論并發(fā)5w/s,同時(shí)Nginx還可以作為緩存服務(wù)器存儲(chǔ)我們靜態(tài)頁(yè)面緩存,性能跟squid不相上下。作為IT運(yùn)維人員在日常運(yùn)維中,需要長(zhǎng)期的關(guān)注網(wǎng)站的整體運(yùn)行情況,分析網(wǎng)站瓶頸,不斷優(yōu)化Nginx的相關(guān)參數(shù),并確保Nginx跟后端服務(wù)連接是否有異常等。
后端服務(wù)層
后端存放我們真正的網(wǎng)站和后臺(tái)服務(wù),通過(guò)前端Nnginx調(diào)用,后端常見(jiàn)的服務(wù)解析軟件,如果是jsp語(yǔ)言的話,容器為T(mén)omcat、Resin、Weblogic等等。如果是PHP程序,我們就需要安裝PHP環(huán)境來(lái)解析php代碼,然后通過(guò)前端Nginx反向代理提供給用戶訪問(wèn)。在日常的運(yùn)維中,需要注意后端服務(wù)層的監(jiān)控,及連接數(shù)的問(wèn)題,要實(shí)時(shí)關(guān)注并監(jiān)控后端服務(wù)的正常,配置多實(shí)例,冗余案例。
數(shù)據(jù)庫(kù)層
目前互聯(lián)網(wǎng)主流數(shù)據(jù)庫(kù)有Mysql、Mariadb、mongodb、Oracle等等,對(duì)于數(shù)據(jù)庫(kù)是整個(gè)架構(gòu)的核心層,而且數(shù)據(jù)是企業(yè)生存之本,所以數(shù)據(jù)庫(kù)的架構(gòu)和維護(hù)也是至關(guān)重要的。中大型的互聯(lián)網(wǎng)公司都有自己專職的DBA人員負(fù)責(zé)Mysql的運(yùn)行和維護(hù)。對(duì)于IT運(yùn)維人員在維護(hù)數(shù)據(jù)庫(kù)時(shí)需要密切關(guān)注數(shù)據(jù)庫(kù)并發(fā)數(shù)、連接池等變化,關(guān)注數(shù)據(jù)庫(kù)主從、讀寫(xiě)分離狀態(tài)及日志的變化情況,并制定完整的備份機(jī)制完成數(shù)據(jù)庫(kù)的備份,有問(wèn)題及時(shí)處理。